package query.db;

import java.util.List;

import query.bean.Question;
import query.bean.Questionnaire;

/**
 * 问卷数据库操作接口
 * 
 * @author lzy
 * @version 1.0.4
 *
 */
public interface QuestionnaireRepository {

	/**
	 * 插入一道问题
	 * 
	 * @param question 要插入的问题
	 * @return 操作结果
	 */
	public boolean insertQuestion(Question question);

	/**
	 * 删除一个问卷的所有问题
	 * 
	 * @param questionnaireId 问卷id
	 * @return 操作结果
	 */
	public boolean deleteQuestion(long questionnaireId);

	/**
	 * 删除一个问卷
	 * 
	 * @param questionnaireId 问卷id
	 * @return 操作结果
	 */
	public boolean deleteQuestionnaire(long questionnaireId);

	/**
	 * 新建一个问卷
	 * 
	 * @param account 问卷创建用户用户名
	 * @param title   问卷标题
	 * @return 操作结果
	 */
	public Questionnaire insertQuestionnaire(String account, String title);

	/**
	 * 查找指定范围的问卷
	 * 
	 * @param account 问卷所属用户
	 * @param start   起始下标()不包括在内
	 * @param num     要查询的问卷数目
	 * @return 问卷列表
	 */
	public List<Questionnaire> searchQuestionnaires(String account, int start, int num);

	/**
	 * 根据id查找问卷
	 * 
	 * @param questionnairesId 问卷id
	 * @return 查询结果
	 */
	public Questionnaire searchQuestionnaires(long questionnairesId);

	/**
	 * 更新问卷状态
	 * 
	 * @param questionnaireId 问卷id
	 * @param close           要更新的状态值
	 * @return 操作结果
	 */
	public boolean updateClose(long questionnaireId, boolean close);

	/**
	 * 获取指定问卷的所有问题
	 * 
	 * @param questionnaireId 问卷id
	 * @return 问题列表
	 */
	public List<Question> searchQuestions(long questionnaireId);

	/**
	 * 查找一个用户的所有问卷
	 * 
	 * @param account 用户名
	 * @return 问卷列表
	 */
	public List<Questionnaire> searchQuestionnaires(String account);

	/**
	 * 根据问卷标题模糊查询问卷
	 * 
	 * @param title 问卷标题
	 * @return 查询结果
	 */
	public List<Questionnaire> searchQuestionnaire(String title, int start, int end);

	/**
	 * 查找一定范围内的全部问卷
	 * 
	 * @param start 起始下标(不包括在内)
	 * @param num   要查询的问卷数目
	 * @return 问卷列表
	 */
	public List<Questionnaire> searchQuestionnaires(int start, int num);
}
